所謂的定義方式,就是我要怎麼去用Model操作資料表。Sequelize就是讓我們去操作資料庫用的,它裡面有Model,Model就是讓我們去操作資料表的。
那麼要去操作資料表之前,就要先定義,定義好之後,才能操作你的資料表。
定義的方式有2種:
1、sequelize.define
2、使用 Extend Model,再用init
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');
const User = sequelize.define('User', {
// Model 的屬性都是定義在這裡
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull 如果沒有填寫,預設就是允許它null
}
}, {
// 其它的 model 選項填寫在這裡
});
// `sequelize.define` 也可以回傳定義的 model
console.log(User === sequelize.models.User); // true
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory');
class User extends Model {}
User.init({
// Model 的屬性都是定義在這裡
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull 如果沒有填寫,預設就是允許它null
}
}, {
// 其它的 model 選項填寫在這裡
sequelize, // We need to pass the connection instance
modelName: 'User' // 我們需要設一個 model 名稱給它
});
// 定義好後 User就跟 sequelize.models.User 是一樣的
console.log(User === sequelize.models.User); // true
這2個方法都是一樣的。
這時候要問一個問題,資料表的名稱是寫在哪裡?這個定義Model的名稱是叫 User,那我的資料表名稱是叫 users,沒看到定義哪裡有寫users阿?
這也是我剛才開接觸的時候,踩了很大的坑,搞不懂為什麼,將在下一節解釋。
想對外分享這則貼文嗎?運用網址更方便呦~